Preparando o ambiente de desenvolvimento

Introdução

Os computadores não compreendem linguagens de programação diretamente; elas precisam ser convertidas para a linguagem de máquina, composta apenas por 0s e 1s (binário), que é a única linguagem que o computador entende. Para converter um código em linguagem de máquina, dependendo da linguagem de programação, é usado um processo que pode ser de compilação ou de interpretação.

Linguagens de programação compiladas são aquelas em que o código-fonte é traduzido para código de máquina antes da execução do programa. Esse processo é realizado por um compilador, um programa que analisa o código-fonte e o converte em instruções diretamente compreensíveis pela arquitetura da máquina alvo. Essa tradução antecipada permite que o programa seja executado com eficiência e rapidez, uma vez que as instruções já foram processadas e otimizadas antes da execução.

Por outro lado, linguagens de programação interpretadas não são traduzidas para código de máquina antes da execução. Em vez disso, um interpretador analisa o código-fonte linha por linha durante a execução do programa. Isso significa que cada vez que o programa é executado, o interpretador deve analisar e traduzir novamente o código-fonte para instruções compreensíveis pela máquina. Embora esse processo possa ser mais lento em comparação com a compilação, as linguagens interpretadas oferecem maior portabilidade, pois o mesmo código-fonte pode ser executado em diferentes sistemas operacionais e arquiteturas, desde que haja um interpretador disponível para a linguagem em questão.

diferença entre compilador e interpretador

Algumas linguagens, como Python e JavaScript (JS), usam uma abordagem intermediária entre compilação e interpretação. Nesses casos, o código-fonte é primeiro compilado para um formato de baixo nível chamado bytecode (imagem: arquivo de texto para arquivo de bytecode). O bytecode é uma representação binária das instruções que a máquina virtual específica da linguagem pode entender. Em seguida, a máquina virtual, é responsável por executar esse bytecode. Dessa forma, o código-fonte é traduzido apenas uma vez para bytecode e depois pode ser executado por diferentes máquinas virtuais em diferentes plataformas, proporcionando a portabilidade das linguagens interpretadas sem a necessidade de interpretar o código-fonte linha por linha repetidamente.

Bytecodes permitem aplicar a técnica de compilação Just-In-Time (JIT). A compilação JIT ocorre em tempo de execução, isto é, durante a execução do bytecode, em vez de ser realizada antecipadamente, como na compilação tradicional. Durante a execução, um compilador JIT analisa o bytecode e traduz partes do código em código de máquina otimizado para a arquitetura específica do computador em que está sendo executado. Esse código de máquina é armazenado em cache para reutilização em futuras execuções do mesmo trecho de código, evitando a necessidade de recompilação repetitiva.

A execução de partes específicas do código otimizado em código de máquina pode melhorar significativamente o desempenho em comparação com a interpretação linha por linha ou a execução de bytecode não compilado para código de máquina. A compilação JIT também permite que a linguagem de programação forneça uma combinação de portabilidade e eficiência, pois o mesmo código-fonte pode ser executado em diferentes plataformas, mas o compilador JIT pode gerar código de máquina otimizado para cada plataforma específica.

A linguagem de programação Javascript

Para esse curso, utilizaremos a linguagem de programação Javascript. O Javascript... (falar sobre características da linguagem, sua popularidade, diversidade de produção, como websites, apps mobile e desktop, etc.

Executando Javascript via navegador web

Como as páginas web utilizam HTML+CSS+JavaScript, um bom navegador web moderno já vem com o interpretador de JavaScript instalado. Para executar códigos JavaScript, acesse as Ferramentas do Desenvolvedor do teu navegador web de preferência (na maioria dos navegadores, o atalho é a tecla F12), e abra a aba "Console". Esta aba é um terminal interativo, onde os comandos podem ser inseridos e executados um de cada vez.

(Também gostaria de um parágrafo e um exemplo de código html+javascript para ilustrar a execução do javascript diretamente pelo navegador.)

Instalando e configurando o ambiente de desenvolvimento e execução do Javascript

Instalando

Para desenvolver em Javascript, vamos utilizar os seguintes programas:

Se você estiver no Windows, também vamos utilizar o seguinte programa:

Observação: Para instalar esses programas precisamos ter privilégios administrativos.

Para instalar os programas, sigamos os passos da seção correspondente ao nosso sistema operacional, seja Linux ou Windows, a seguir:

Linux

Por fazer

Windows

Siga uma das seguintes alternativas:

  • Alternativa 1 (fácil)

    Execute o seguinte comando no terminal no modo administrativo:

    Set-ExecutionPolicy RemoteSigned -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/pedrosiqueira/ifmsjs/refs/heads/main/scripts/01_windows_setup.ps1'))

    Esse comando executa o script de instalação dos programas para desenvolvimento de Javascript. Se você ficou curioso, pode clicar nesse link e ver o que o script faz.

  • ou

  • Alternativa 2 (difícil)

    Instale o Windows Subsystem for Linux (WSL): https://learn.microsoft.com/en-us/windows/wsl/install. Depois, siga o tutorial de instalação do NodeJS para Windows: https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wsl.

  • Configurando

    Uma vez que instalamos os programas necessários para desenvolver em Javascript, agora vamos configurá-los.

    No caso do git, vamos definir um nome de usuário e email para salvar snapshots do progresso do nosso projeto. Como nosso projeto será hospedado no GitHub, você pode criar uma conta nesse site e usá-la para configurar o git.

    No vscode, vamos instalar as seguintes extensões que nos ajudarão a desenvolver o projeto:

    Também vamos trocar o npm pelo pnpm, que é uma alternativa mais rápida e leve do npm.

    Para instalar os programas, sigamos os passos da seção correspondente ao nosso sistema operacional, seja Linux ou Windows, a seguir:

    Para facilitar o processo de configuração dos programas, executemos no terminal (SEM o modo administrativo) um dos seguintes scripts conforme nosso sistema operacional:

    Linux

    por fazer

    Windows

    Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/pedrosiqueira/ifmsjs/refs/heads/main/scripts/02_alg_project_setup.ps1'))

    Além de configurar os programas, esses scripts também baixam o esqueleto inicial do nosso projeto do GitHub e o abrem no vscode.

    Tudo pronto para começarmos!